<?php
class AttachAction extends AdminAction{

	//附件列表
	public function index(){
		$sql['order']='id desc';
		$list=$this->_select('files',$sql,10);
		$this->assign('page',$list['page']);
		unset($list['page']);
		foreach($list as $k=>$v){
			$s=explode('/',$v['path']);
        			$j=count($s);
			$s[$j-1]='s_'.$s[$j-1];
			$s=implode('/',$s);
			$list[$k]['s']=__ROOT__.ltrim($s,'.');
			}
		$this->assign('list',$list);
		$this->display();
	}

	public function clear(){

		$pic_upload=C('TMPL_PARSE_STRING.__UPLOAD__');

		$files=M('Files');

		$files=$files->getField('id,path');

		foreach($files as $key => $val){
			$files[$key]='.'.$val;
		}

		$path='.'.$pic_upload;	//附件目录

		self::clearFile($path,$files);

		echo "<font style='font-size:12px;'><a href='__URL__/?a=index'>返回>></a></font>";
	}

	static protected function clearFile($path,$files){
		if(is_dir($path)){
			if($open=opendir($path)){
					$fileList=scandir($path);
					foreach($fileList as $file){
						if($file!='.' && $file!='..' && $file!='cj'){
							$file=$path.'/'.$file;
							if(is_dir($file)){
								self::clearFile($file,$files);
							}

							$explode_file=explode('/',$file);
							$n=count($explode_file);
							if(!is_dir($file) && strpos($explode_file[$n-1],'_')!==1){
								if(!in_array($file,$files)){

									$s=self::_sm($file,'s_');
									$m=self::_sm($file,'m_');

									$res1=self::_unlink($s);
									$res2=self::_unlink($m);
									$res3=self::_unlink($file);

									if($res1 && $res2 && $res3){
										echo "<font style='font-size:12px;color:blue'>已删除：{$file}</font><br/>";
									}else{
										echo "<font style='font-size:12px;color:red'>无权限：{$file}</font><br/>";
									}
								}
							}
						}
					}
					
			}
		}else{
			$this->error('附件清除目录不正确');
		}
	}

	public function del(){
		$files=M('Files');
		$id=$_GET['id'];$file='.'.$_GET['file'];

		if(is_file($file)){
			
			$s=self::_sm($file,'s_');
			$m=self::_sm($file,'m_');
			$res1=self::_unlink($s);
			$res2=self::_unlink($m);
			$res3=self::_unlink($file);
			
		}

		$res=$files->delete($id);
		if($res1 || $res2 || $res3 || $res){
			if($res){
				$this->success('删除成功!');
			}else{
				$this->error('删除失败！');
			}
		}

	}

	//缩略图：参数：文件名，前缀
	static protected function _sm($file,$f){
		if(isset($file)){
			$file=explode('/',$file);
			$n=count($file);
			$file[$n-1]=$f.$file[$n-1];
			$file=implode('/',$file);
			return $file;
		}
	}

	static protected function _unlink($file){
		if(isset($file)){
			if(is_file($file)){
				$result=unlink($file);
				if(!$result){
					$this->error('文件删除失败，请检查目录权限！');
				}else{
					return true;
				}
			}else{
				return true;
			}
		}else{
			return true;
		}
	}
}
